// 在typescript中定义函数的时候都要明确指定参数的数据类型,返回值类型可以明确的指定，也可以自动进行类型推导
/*
*函数的参数和返回值：
*   函数是typescript非常重要的部分，typescript应许我们指定函数的参数和函数的返回值
*   参数的类型注解：声明函数的时候，可以在每个参数的后面添加类型注解以声明函数接收的参数类型
*
*
*函数的返回值类型：
*   给函数的返回值添加类型注解的时候，注解出现在函数列表的后面
*   和变量的类型注解一样，通常情况下不需要为函数明确指定返回值类型，typescript会根据return返回值推断出来函数的返回值类型
*
*
* */
function getSum(num1: number, num2: number): number {
    return num1 + num2
}
const r1: number = getSum(50, 100)
console.log(r1)

function getArrayMax(array: number[]): number {
    let max: number = array[0]
    array.forEach((item: number, index: number): void => {
        if (item > max) {
            max = item
        }
    })
    return max
}
const r2: number = getArrayMax([1, 2, 3, 4, 10, 9, 80, 450, 620])
console.log(r2)


type LyricType = {
    time: number,
    text: string
}
function parseLyric(lyric: string): LyricType[] {
    const lyrics: LyricType[] = [];
    lyrics.push({time: 111, text: lyric})
    return lyrics
}
const r3: LyricType[] = parseLyric("taoPinQi")
console.log(r3)


let names: string[] = ["马云", "马化腾", "王健林"]
/*
匿名函数的参数和返回值不建议添加类型注解
names.forEach((item: string, index: number, array: string[]): void => {
    console.log(item)
})*/
names.forEach((item,index,array)=>{
    console.log(item)
})

export {}